{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "2.spiral_classification.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cG-6FnJWGy2Q"
      },
      "source": [
        "## Spiral classifciation\n",
        "\n",
        "本次的代码教程里解决 sprial classification 问题，教程有配套的文字版讲解理论，地址为：https://atcold.github.io/pytorch-Deep-Learning/chapters/02-3/   基础一般的同学可以适当看看理论\n",
        "\n",
        "下面代码是下载绘图函数到本地。（画点的过程中要用到里面的一些函数）"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rtYBgyc48AAY",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "4c9107dd-a37a-4115-cf1e-e07b84c4b7c2"
      },
      "source": [
        "!wget https://raw.githubusercontent.com/Atcold/pytorch-Deep-Learning/master/res/plot_lib.py"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "--2022-01-03 14:00:59--  https://raw.githubusercontent.com/Atcold/pytorch-Deep-Learning/master/res/plot_lib.py\n",
            "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n",
            "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 4399 (4.3K) [text/plain]\n",
            "Saving to: ‘plot_lib.py.1’\n",
            "\n",
            "\rplot_lib.py.1         0%[                    ]       0  --.-KB/s               \rplot_lib.py.1       100%[===================>]   4.30K  --.-KB/s    in 0s      \n",
            "\n",
            "2022-01-03 14:00:59 (52.7 MB/s) - ‘plot_lib.py.1’ saved [4399/4399]\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6bjVuFccHshH"
      },
      "source": [
        "引入基本的库，然后初始化重要参数"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dID-vBkv7CTp",
        "outputId": "9f1719ab-d7c6-4e2d-a587-6d389ca68c22",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "import random\n",
        "import torch\n",
        "from torch import nn, optim\n",
        "import math\n",
        "from IPython import display\n",
        "from plot_lib import plot_data, plot_model, set_default\n",
        "\n",
        "# 因为colab是支持GPU的，torch 将在 GPU 上运行\n",
        "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
        "print('device: ', device)\n",
        "\n",
        "# 初始化随机数种子。神经网络的参数都是随机初始化的，\n",
        "# 不同的初始化参数往往会导致不同的结果，当得到比较好的结果时我们通常希望这个结果是可以复现的，\n",
        "# 因此，在pytorch中，通过设置随机数种子也可以达到这个目的\n",
        "seed = 12345\n",
        "random.seed(seed)\n",
        "torch.manual_seed(seed)\n",
        "\n",
        "N = 1000  # 每类样本的数量\n",
        "D = 2  # 每个样本的特征维度\n",
        "C = 3  # 样本的类别\n",
        "H = 100  # 神经网络里隐层单元的数量"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "device:  cuda:0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "G5yIuwZNJyj9"
      },
      "source": [
        "初始化 X 和 Y。 X 可以理解为特征矩阵，Y可以理解为样本标签。\n",
        "结合代码可以看到，X的为一个 NxC 行， D 列的矩阵。C 类样本，每类样本是 N个，所以是 N*C 行。每个样本的特征维度是2，所以是 2列。\n",
        "\n",
        "在 python 中，调用 zeros 类似的函数，第一个参数是 y方向的，即矩阵的行；第二个参数是 x方向的，即矩阵的列，大家得注意下，不要搞反了。下面结合代码看看 3000个样本的特征是如何初始化的。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Rk2qVCTeIE5D",
        "outputId": "11f5b541-60de-4cee-cb55-5ed60b749336",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "X = torch.zeros(N * C, D).to(device)\n",
        "Y = torch.zeros(N * C, dtype=torch.long).to(device)\n",
        "for c in range(C):\n",
        "    index = 0\n",
        "    t = torch.linspace(0, 1, N) # 在[0，1]间均匀的取10000个数，赋给t\n",
        "    # 下面的代码不用理解太多，总之是根据公式计算出三类样本（可以构成螺旋形）\n",
        "    # torch.randn(N) 是得到 N 个均值为0，方差为 1 的一组随机数，注意要和 rand 区分开\n",
        "    inner_var = torch.linspace( (2*math.pi/C)*c, (2*math.pi/C)*(2+c), N) + torch.randn(N) * 0.2\n",
        "    \n",
        "    # 每个样本的(x,y)坐标都保存在 X 里\n",
        "    # Y 里存储的是样本的类别，分别为 [0, 1, 2]\n",
        "    for ix in range(N * c, N * (c + 1)):\n",
        "        X[ix] = t[index] * torch.FloatTensor((math.sin(inner_var[index]), math.cos(inner_var[index])))\n",
        "        Y[ix] = c\n",
        "        index += 1\n",
        "\n",
        "print(\"Shapes:\")\n",
        "print(\"X:\", X.size())\n",
        "print(\"Y:\", Y.size())"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Shapes:\n",
            "X: torch.Size([3000, 2])\n",
            "Y: torch.Size([3000])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bslCqMkF8IAk",
        "outputId": "19439021-f99a-42c5-b722-c5e6326f3178",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 248
        }
      },
      "source": [
        "# visualise the data\n",
        "plot_data(X, Y)"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XSWH6zlD8UiJ"
      },
      "source": [
        "## 1. 构建线性模型分类"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NQR6eE5Z8Wj2",
        "outputId": "34cec3cf-0114-4dd5-98d3-bff061895b32",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "learning_rate = 1e-3 # 学习率\n",
        "lambda_l2 = 1e-5 # 权重衰减超参数：正则项权重lambda\n",
        "\n",
        "# nn 包用来创建线性模型\n",
        "# 每一个线性模型都包含 weight 和 bias\n",
        "model = nn.Sequential(\n",
        "    nn.Linear(D, H),\n",
        "    nn.Linear(H, C)\n",
        ")\n",
        "model.to(device) # 把模型放到GPU上\n",
        "\n",
        "# nn 包含多种不同的损失函数，这里使用的是交叉熵（cross entropy loss）损失函数\n",
        "criterion = torch.nn.CrossEntropyLoss()\n",
        "\n",
        "# 这里使用 optim 包进行随机梯度下降(stochastic gradient descent)优化\n",
        "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, weight_decay=lambda_l2)\n",
        "\n",
        "# 开始训练\n",
        "for t in range(1000):\n",
        "    # 把数据输入模型，得到预测结果\n",
        "    y_pred = model(X)\n",
        "    # 计算损失和准确率\n",
        "    loss = criterion(y_pred, Y)\n",
        "    score, predicted = torch.max(y_pred, 1)\n",
        "    acc = (Y == predicted).sum().float() / len(Y)\n",
        "    print('[EPOCH]: %i, [LOSS]: %.6f, [ACCURACY]: %.3f' % (t, loss.item(), acc))\n",
        "    display.clear_output(wait=True)\n",
        "\n",
        "    # 反向传播前把梯度置 0 \n",
        "    optimizer.zero_grad()\n",
        "    # 反向传播优化 \n",
        "    loss.backward()\n",
        "    # 更新全部参数\n",
        "    optimizer.step()"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[EPOCH]: 999, [LOSS]: 0.861541, [ACCURACY]: 0.504\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "34cKJNuafYks"
      },
      "source": [
        "这里对上面的一些关键函数进行说明:\n",
        "\n",
        "使用 print(y_pred.shape) 可以看到模型的预测结果，为[3000, 3]的矩阵。每个样本的预测结果为3个，保存在 y_pred 的一行里。值最大的一个，即为预测该样本属于的类别\n",
        "\n",
        "score, predicted = torch.max(y_pred, 1) 是沿着第二个方向（即X方向）提取最大值。最大的那个值存在 score 中，所在的位置（即第几列的最大）保存在 predicted 中。下面代码把第10行的情况输出，供解释说明\n",
        "\n",
        "此外，大家可以看到，每一次反向传播前，都要把梯度清零，这个在知乎上有一个回答，大家可以参考：https://www.zhihu.com/question/303070254\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0cXVBCk7b68f",
        "outputId": "00493e72-be59-4f45-fff8-4ab32a31b61c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(y_pred.shape)\n",
        "print(y_pred[10, :])\n",
        "print(score[10])\n",
        "print(predicted[10])"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "torch.Size([3000, 3])\n",
            "tensor([-0.2245, -0.2594, -0.2080], device='cuda:0', grad_fn=<SliceBackward0>)\n",
            "tensor(-0.2080, device='cuda:0', grad_fn=<SelectBackward0>)\n",
            "tensor(2, device='cuda:0')\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "y8c6iBBk8fq3",
        "outputId": "1caa0acd-3138-4d6e-f652-ec048827030a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 317
        }
      },
      "source": [
        "# Plot trained model\n",
        "print(model)\n",
        "plot_model(X, Y, model)"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Sequential(\n",
            "  (0): Linear(in_features=2, out_features=100, bias=True)\n",
            "  (1): Linear(in_features=100, out_features=3, bias=True)\n",
            ")\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zWYPclNw8lh8"
      },
      "source": [
        "上面使用 print(model) 把模型输出，可以看到有两层：\n",
        "- 第一层输入为 2（因为特征维度为主2），输出为 100；\n",
        "- 第二层输入为 100 （上一层的输出），输出为 3（类别数）\n",
        "\n",
        "从上面图示可以看出，线性模型的准确率最高只能达到 50% 左右，对于这样复杂的一个数据分布，线性模型难以实现准确分类。\n",
        "\n",
        "## 2. 构建两层神经网络分类"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lPfPN5kN8oaz",
        "outputId": "07e989e4-dd45-454e-bfa6-4a6519557fec",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "learning_rate = 1e-3\n",
        "lambda_l2 = 1e-5\n",
        "\n",
        "# 这里可以看到，和上面模型不同的是，在两层之间加入了一个 ReLU 激活函数\n",
        "model = nn.Sequential(\n",
        "    nn.Linear(D, H),\n",
        "    nn.ReLU(),\n",
        "    nn.Linear(H, C)\n",
        ")\n",
        "model.to(device)\n",
        "\n",
        "# 下面的代码和之前是完全一样的，这里不过多叙述\n",
        "criterion = torch.nn.CrossEntropyLoss()\n",
        "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, weight_decay=lambda_l2) # built-in L2\n",
        "\n",
        "# 训练模型，和之前的代码是完全一样的\n",
        "for t in range(1000):\n",
        "    y_pred = model(X)\n",
        "    loss = criterion(y_pred, Y)\n",
        "    score, predicted = torch.max(y_pred, 1)\n",
        "    acc = ((Y == predicted).sum().float() / len(Y))\n",
        "    print(\"[EPOCH]: %i, [LOSS]: %.6f, [ACCURACY]: %.3f\" % (t, loss.item(), acc))\n",
        "    display.clear_output(wait=True)\n",
        "    \n",
        "    # zero the gradients before running the backward pass.\n",
        "    optimizer.zero_grad()\n",
        "    # Backward pass to compute the gradient\n",
        "    loss.backward()\n",
        "    # Update params\n",
        "    optimizer.step()"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[EPOCH]: 999, [LOSS]: 0.178408, [ACCURACY]: 0.949\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-Kl5U4j48y7h",
        "outputId": "118645ed-a2e9-4191-c5cc-2359858944fb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 335
        }
      },
      "source": [
        "# Plot trained model\n",
        "print(model)\n",
        "plot_model(X, Y, model)"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Sequential(\n",
            "  (0): Linear(in_features=2, out_features=100, bias=True)\n",
            "  (1): ReLU()\n",
            "  (2): Linear(in_features=100, out_features=3, bias=True)\n",
            ")\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FSwokqyTj7Gm"
      },
      "source": [
        "大家可以看到，在两层神经网络里加入 ReLU 激活函数以后，分类的准确率得到了显著提高。\n",
        "\n",
        "里面有原因相信大家在专知课程里面已经学习了，如果不清楚为什么，请再返回去看看专知课程。"
      ]
    }
  ]
}